package edu.uoc.tds.pec4.gestor;

import edu.uoc.tds.pec4.model.SS1_CentroDocente;
import edu.uoc.tds.pec4.model.SS1_TipoEvento;
import edu.uoc.tds.pec4.model.SS1_Universidad;
import edu.uoc.tds.pec4.model.SS1_Usuario;
import edu.uoc.tds.pec4.model.SS2_Evento;
import edu.uoc.tds.pec4.model.SS3_InformeEventosAsistente;
import edu.uoc.tds.pec4.util.KeyValue;
import java.rmi.RemoteException;
import java.util.List;

/**
 * Tecnicas de Desarrollo de Software - (UOC)
 * Interface que agrupa los servicios implementados en GestorInformesImpl
 * @author José Carlos Fernández Luque
 * @version 1.0
 */
public interface GestorInformes extends GestorDisco {

    /**
     *
     * @return
     * @throws RemoteException
     * @throws Exception
     */
    public abstract List<SS1_Usuario> dameListaAsistentes() throws RemoteException, Exception;

    /**
     *
     * @param asistente
     * @param tipoEvento
     * @param fechaInicial
     * @param fechaFinal
     * @param estadoEvento
     * @return
     * @throws RemoteException
     * @throws Exception
     */
    public abstract List<SS3_InformeEventosAsistente> dameResultEventosAsistente(SS1_Usuario asistente, SS1_TipoEvento tipoEvento,
            String fechaInicial, String fechaFinal, KeyValue estadoEvento) throws RemoteException, Exception;

    /**
     *
     * @param universidad
     * @param centro
     * @param tipoEvento
     * @param fechaInicial
     * @param fechaFinal
     * @param porcentajeMayor
     * @param porcentajeMenor
     * @return
     * @throws RemoteException
     * @throws Exception
     */
    public abstract List<SS3_InformeEventosAsistente> dameResultPorcentajeAsistencia(SS1_Universidad universidad, SS1_CentroDocente centro,
            SS1_TipoEvento tipoEvento, String fechaInicial, String fechaFinal, String porcentajeMayor, String porcentajeMenor) throws RemoteException, Exception;

    /**
     *
     * @return
     * @throws RemoteException
     * @throws Exception
     */
    public List<SS2_Evento> getComboEventos() throws RemoteException, Exception;

    /**
     *
     * @param sS1_Universidad
     * @param sS1_CentroDocente
     * @param sS2_Evento
     * @param asistencia
     * @return
     * @throws RemoteException
     * @throws Exception
     */
    public abstract List<SS3_InformeEventosAsistente> dameResultAsistentesEvento(SS1_Universidad sS1_Universidad, SS1_CentroDocente sS1_CentroDocente, SS2_Evento sS2_Evento, KeyValue asistencia) throws RemoteException, Exception;

    /**
     *
     * @param sS1_Universidad
     * @param sS1_CentroDocente
     * @param tipoEvento
     * @param precioMayorDe
     * @param precioMenorDe
     * @return
     * @throws RemoteException
     * @throws Exception
     */
    public abstract List<SS3_InformeEventosAsistente> dameResultIngresosTotales(SS1_Universidad sS1_Universidad, SS1_CentroDocente sS1_CentroDocente, SS1_TipoEvento tipoEvento, String precioMayorDe, String precioMenorDe) throws RemoteException, Exception;

    /**
     *
     * @param sS1_Universidad
     * @return
     * @throws RemoteException
     * @throws Exception
     */
    public abstract List<SS1_CentroDocente> dameCentrosUniversidad(SS1_Universidad sS1_Universidad) throws RemoteException, Exception;
}
